package uk.ac.lkl.common.ui;



/**
 * The interface for classes that are able to create new instances of
 * themselves from a given argument.
 * 
 * Other attributes of the instance will be shallow/deep copied by the
 * implementing method.
 * 
 * @param <O>
 *            object of class implementing this interface
 * @param <A>
 *            the single argument that is passed to the create method
 * 
 * @author Darren Pearce
 * @version $Revision$
 * @version $Date$
 * 
 */
public interface Creator<O, A> {

    public O create(A argument);

}
